package com.common.basis.result;

import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.http.HttpStatus;

import java.util.List;

/**
 * 返回
 * @author wangguochao
 */
public class ResultSet {

    /**
     * 返回除去翻页以外的类型
     */
    public static <T> Result<T> go(T d) {
        return Result.<T>builder().data(d).message("success").status(HttpStatus.OK.value()).build();
    }

    /**
     * 成功操作
     */
    public static Result<?> success() {
        return Result.builder().message("操作成功").status(HttpStatus.OK.value()).build();
    }
    /**
     * 操作失败返回
     */
    public static Result<?> error() {
        return Result.builder().message("操作失败").status(HttpStatus.CONFLICT.value()).build();
    }
    /**
     * 操作失败返回
     */
    public static Result<?> error(String message) {
        return Result.builder().message(message).status(HttpStatus.MOVED_PERMANENTLY.value()).build();
    }

    /**
     * 保存操作返回
     */
    public static Result<?> operation(boolean b) {
        return (Result<?>) (b ? ResultSet.success() : ResultSet.error());
    }
    /**
     * 翻页信息返回
     * @param b
     */
    public static <T> ResultPage<T> page(IPage<T> b) {
        return ResultPage.<T>builder().status(HttpStatus.OK.value()).message(HttpStatus.OK.toString()).data(b.getRecords()).total(b.getTotal()).build();
    }

    /**
     * 自定义分页
     * @param d 数据集
     * @param total 总数
     * @param <T> 范性
     * @return 响应
     */
    public static <T> ResultPage<T> page(List<T> d,long total) {
        return ResultPage.<T>builder().status(HttpStatus.OK.value()).message(HttpStatus.OK.toString()).data(d).total(total).build();
    }
}
